home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / tools / lu62 / port / rglu.h < prev    next >
Text File  |  1996-07-10  |  9KB  |  238 lines

  1. /*  k 1003    27/08/90     */
  2. /*  k 1005    10/09/90     */
  3. /*  k 0051    12/09/90     */
  4. /*  k 0054    13/09/90       */
  5. /*  k 1005    17/09/90     */  /* gluad ->glu */
  6. /*  k 0059    21/09/90       */
  7. /*  k 0087    03/12/90       */
  8. /*  k 0157    15/04/91    */
  9. /* k 0207    06/09/91    *//* delete majelno */
  10. /* k 0224       23/09/91        *//* ebss */
  11. /* k 0230       09/10/91        *//* assemble some data */
  12. /* k 0257    08/11/91    *//* Transient version */
  13. /* k 1073   15/01/92    *//* clear work fields */
  14. #include <ebss.h>               /* @0224 */
  15. #include <stdio.h>
  16. #include <fcntl.h>
  17. #include <string.h>
  18.  /* @0230 */
  19.  /* @0207 */
  20.  extern msgop();
  21.  struct parmglu *glu(struct parmglu *wglu)
  22.   {
  23.  struct srdt  *ws;
  24.  struct rdt   *wr;
  25.  struct majtb *wm;
  26.  struct aname *wa;
  27.  struct dlctb *wd;
  28.  struct mat   *wn;
  29.  struct namtb *wntb;
  30.  struct nausg *wnsg;
  31.  struct cash *wc;
  32.  struct glu *wglua;              /* 1005 */
  33.  struct nau   *wnau;
  34.      int wcnt,i,j,k;
  35.      int cntnau=0;
  36.      char *w,*w1;           /* work ptr         */
  37.      ws=avt->srdt;                    /* @0087 */
  38.      wglu->fl1 &= 255-CCASH-CNODE;  /* 1005 *//* @0157 */
  39.      wglu->gluadar=0;wglu->gluadnod=0;   /* 1005 */
  40.      wglu->fl2=0;                        /* 1005 */
  41.      for (i=0;i<24;i++)
  42.          { wglu->glulu[i]=' ';}  /* reset fields for result @1073 */
  43.      wcnt=ws->gno;          /* number GLU       */
  44.      wglua=ws->gluad[0];    /* ptr to glu-table */   /* 1003 */
  45.      w=(wglu->inlu);                        /* @0054 */
  46.      for (i=0;i<wcnt;i++)
  47.        {  w1=(wglua->namelu);                                   /* @0054 */
  48. #if (RESIDENT == 0)
  49.      if (Res_strncmp(w,w1,8) !=0)    /* @0257 */
  50. #else
  51.      if (strncmp(w,w1,8) !=0)
  52. #endif
  53.             wglua=wglua+1;
  54.          else
  55.        {  w=(wglu->glulu); w1=(wglua->netlu);   /* 1005 */
  56. #if (RESIDENT == 0)    /* @0257 */
  57.           Res_memcpy(w,w1,24);                      /* 1005 */
  58. #else
  59.               memcpy(w,w1,24);                      /* 1005 */
  60. #endif
  61.           wglu->gluadar=wglua->netadr;
  62.           wglu->gluadnod=wglua->nodeadr;            /* @0054 */
  63.           wglu->fl1 |= CNODE;                     /* 1005 *//* @0157 */
  64.               goto GLU4;                            /* 1005 */
  65.            }                                        /* 1005 */
  66.         }
  67.      if ( wglu->glulu[0] =='\0' || wglu->glulu[0] ==' ')  /* 1073 1005 */
  68.         { w=(wglu->glulu); w1=(wglu->inlu);
  69. #if (RESIDENT == 0)    /* @0257 */
  70.       Res_memcpy(w,w1,8);  /* name LU to output list */
  71. #else
  72.       memcpy(w,w1,8);  /* name LU to output list */
  73. #endif
  74.     }
  75.      if ( wglu->mode ==GLUFID4)
  76.         { w=(wglu->glunode); w1=(wglu->innode);
  77. #if (RESIDENT == 0)    /* @0257 */
  78.       Res_memcpy(w,w1,16);  /* name NODE,AREA     */
  79. #else
  80.           memcpy(w,w1,16);  /* name NODE,AREA     */
  81. #endif
  82.         }
  83.      if ( wglu->mode ==GLUFID2)
  84.         { w=(wglu->glunode); w1=(wglu->innode);      /* 1005 */
  85. #if (RESIDENT == 0)    /* @0257 */
  86.       Res_memcpy(w,w1,8);   /* name NODE             */
  87. #else
  88.           memcpy(w,w1,8);   /* name NODE             */
  89. #endif
  90.         }                                            /* 1005 */
  91. GLU4:                                                /* 1005 */
  92.      if (wglu->gluadar==0 || wglu->gluadnod==0)      /* 1005 */
  93.     { wc=avt->cash;      /* ptr to cash table  */        /* @0087 */
  94.       wcnt=avt->cnt;     /* count elements     */ /* 0051 *//* @0087 */
  95.           for (i=0;i<wcnt;i++)
  96.         { w=(wc->lu); w1=(wglu->glulu);            /* @0054 */
  97. #if (RESIDENT == 0)    /* @0257 */
  98.           if (Res_strncmp(w,w1,8) !=0 )
  99. #else
  100.               if (strncmp(w,w1,8) !=0 )
  101. #endif
  102.                  wc=wc+1;
  103.               else
  104.         { wglu->fl1 |=CCASH;  /* cash found  *//* 1005 *//* @0157 */
  105.                  wglu->gluadar=wc->adra; /* network area */
  106.          wglu->fl1 |= CNODE;                /* 1005 *//* @0157 */
  107.          w=(wglu->glunode); w1=(wc->node);        /* @0054 */
  108. #if (RESIDENT == 0)    /* @0257 */
  109.          Res_memcpy(w,w1,8);   /* LU,NODE,AREA name */    /* @0054 */
  110. #else
  111.          memcpy(w,w1,8);   /* LU,NODE,AREA name */    /* @0054 */
  112. #endif
  113.          wglu->gluadnod=wc->adrn;            /* @0054 */
  114.                  goto LOOKRET;
  115.                 }                                          /* 1005 */
  116.              }
  117.           }
  118. LOKNODE:                                                  /* 1005 */
  119.       w=(wglu->glunode); w1=(ws->noden);    /* @0059 */
  120.      if ((wglu->glunode[0]!='\0') &&        /* @0059 */   /* 1005 */
  121.      (wglu->glunode[0]!=' ')  &&        /* @0059 */
  122. #if (RESIDENT == 0)    /* @0257 */
  123.      (Res_strncmp(w,w1,8) != 0))        /* @0059 */
  124. #else
  125.      (strncmp(w,w1,8) != 0))        /* @0059 */
  126. #endif
  127.         goto SARDT;                                       /* 1005 */
  128.       wm=avt->majtb;                      /*  */    /* @0087 */
  129.       w=wglu->glulu;                        /* @0054 */
  130.       for (i=0;i<2;i++)            /* @0207 */
  131.         { if (wm->majname[0]=='\0')
  132.              wm=wm+1;
  133.           else
  134.              { wr=wm->rdt;                               /* 1005  */
  135.                cntnau=wr->nauno;
  136.                wnau=wr->nau;
  137.                for (j=0;j<cntnau;j++)
  138.          {  w1=wnau->name; /* */        /* @0054 */
  139. #if (RESIDENT == 0)    /* @0257 */
  140.            if (Res_strncmp(w,w1,8) !=0)
  141. #else
  142.                    if (strncmp(w,w1,8) !=0)
  143. #endif
  144.                       wnau=wnau+1;
  145.                    else
  146.                     { wn=ws->mat[0];     /* ptr to mat */  /* 1003 */
  147.                                 /* @0054 */
  148.                   wglu->gluadar=wn->daf;        /* @0054 */
  149. /* @0087 */              wglu->gluadnod=avt->mynode;       /* 1005 */
  150.                               w=wglu->glunode; w1=ws->noden;   /* 1005 */
  151. #if (RESIDENT == 0)    /* @0257 */
  152.                   Res_memcpy(w,w1,8);   /* node name *//* 1005 */
  153. #else
  154.                               memcpy(w,w1,8);   /* node name *//* 1005 */
  155. #endif
  156.                   wglu->fl1 |= CNODE;  /* @0157 */   /* 1005 */
  157.                               wcnt=ws->ano;       /* count area name           */
  158.                               wa=ws->aname[0];    /* ptr to area name table    */ /* 1003 */
  159.                               for (k=0;k<wcnt;k++)
  160.                                 { if (wglu->gluadar != wa->addr)
  161.                                      wa=wa+1;
  162.                                   else
  163.                                      { w=(wglu->gluarea); w1=(wa->aname);
  164. #if (RESIDENT == 0)    /* @0257 */
  165.                        Res_memcpy(w,w1,8);     /* name AREA  */
  166. #else
  167.                                        memcpy(w,w1,8);     /* name AREA  */
  168. #endif
  169.                                      }
  170.                                  }
  171.                                 /* @0054 */
  172.                   goto LOOKRET;                    /* 1005 */
  173.                       }
  174.              }
  175.            }                        /* @0054 */
  176.            wm=wm+1;                        /* @0054 */
  177.                      }
  178.      goto LOOKRET;
  179. SARDT:
  180.      wcnt=ws->ano;       /* count area name           */
  181.      wa=ws->aname[0];    /* ptr to area name table    */ /* 1003 */
  182.      for (i=0;i<wcnt;i++)
  183.        { if (wglu->gluadar != wa->addr)
  184.             wa=wa+1;
  185.          else
  186.            { w=(wglu->gluarea); w1=(wa->aname);
  187. #if (RESIDENT == 0)    /* @0257 */
  188.         Res_memcpy(w,w1,8);     /* name AREA  */
  189. #else
  190.             memcpy(w,w1,8);     /* name AREA  */
  191. #endif
  192.            }
  193.          wcnt=ws->matno;     /* count MAT  */
  194.          wn=ws->mat[0];      /* ptr to mat-table */ /* 1003 */
  195.          for (k=0;k<wcnt;k++)
  196.            { if (wglu->gluadar != wn->daf)
  197.                 wn=wn+1;
  198.              else
  199.                 { wcnt=wn->nodno;     /* count NODE */
  200.                   wntb=wn->ntb[0];       /* ptr to node name table */
  201.                    for (k=0;k<wcnt;k++)
  202.                      { wnsg=wntb->nausg;   /* ptr to segad */
  203.                        if (wglu->gluadar != wnsg->sarea)
  204.                           wntb=wntb+1;
  205.                        else
  206.                          { w=(wglu->glunode);w1=(wntb->name);
  207. #if (RESIDENT == 0)    /* @0257 */
  208.               Res_memcpy(w,w1,8); /* NODE name     */
  209. #else
  210.                           memcpy(w,w1,8); /* NODE name     */
  211. #endif
  212.               wglu->fl1 |= CNODE; /*node name found *//* @0157 */
  213.                           goto LOOKRET;
  214.                          }
  215.                      }
  216.                  }
  217.           wglu->fl1 |= NNODE; /*node name not found *//* @0157 */
  218.               goto LOOKRET;
  219.               }
  220.            wglu->gluadar=0;
  221.            goto LOOKRET;
  222.         }
  223.   LOOKRET:
  224.      wn=ws->mat[0];    /* ptr to mat-table  */ /* 1003 */
  225.      if ( wn->type ==3)                        /* 1003 */
  226.         { wglu->fl2=3;      /* LAN               */
  227.           return (wglu);                       /* 1005 */
  228.         }
  229.      if ( wn->type ==2)                        /* 1003 */
  230.         { wglu->fl2=2;      /* ROUTE           */
  231.           return (wglu);                       /* 1005 */
  232.         }
  233.      else
  234.        { wglu->fl2=1;     /*  SNA               */
  235.          return (wglu);
  236.        }
  237.   }
  238.